import { Module } from '@nestjs/common';
import { AdminController } from './admin.controller';
import { AdminService } from './admin.service';
import { LangModule } from './common/lang/lang.module';
import { LocaleModule } from './common/locale/locale.module';
import { BaseController } from './base/base.controller';
import { I18nModule } from '@app/i18n';
import { UtilsModule } from '@app/utils';
import { ConfigureModule } from '@app/configure';
import { APP_GUARD } from '@nestjs/core';
import { AuthGuard } from './guard/auth/auth.guard';
import { JwtVerifyModule } from '@app/jwt-verify';
import { AuthModule } from './common/auth/auth.module';
import { DbModule } from '@app/db';
import { CacheModule } from '@app/cache';
import { DictionaryModule } from './common/dictionary/dictionary.module';
import { MenuModule } from './common/menu/menu.module';
import { RoleModule } from './common/role/role.module';
import { TenantModule } from './common/tenant/tenant.module';
import { MemberModule } from './common/member/member.module';
import { PlatformModule as PlatformSettingModule} from './common/platform/platform.module';
import { IotSimModule } from './iot-sim/iot-sim.module';
import { DeviceModule } from './device/device.module';
import { MongodbModule } from '@app/mongodb';
import { PricingRuleModule } from './pricing-rule/pricing-rule.module';
import { DeviceSettingAttrModule } from './device-setting-attr/device-setting-attr.module';
import { SettingAttrModelModule } from './setting-attr-model/setting-attr-model.module';
import { DeviceModelModule } from './device-model/device-model.module';
import { DeviceParamsRuleModule } from './device-params-rule/device-params-rule.module';
import { ChargeOrderModule } from './charge-order/charge-order.module';
import { UserModule } from './user/user.module';
import { ScheduleModule } from './schedule/schedule.module';
import { RechargeOptionModule } from './recharge-option/recharge-option.module';
import { RechargeOrderModule } from './recharge-order/recharge-order.module';
import { ChargingStationModule } from './charging-station/charging-station.module';
import { MerchantModule } from './merchant/merchant.module';
import { WithdrawalModule } from './withdrawal/withdrawal.module';
import { PlatformModule } from './platform/platform.module';
import { OtaModule } from './ota/ota.module';
import { ChargingCardModule } from './charging-card/charging-card.module';

@Module({
  imports: [ConfigureModule, DbModule, MongodbModule, CacheModule, I18nModule, UtilsModule, JwtVerifyModule, PlatformSettingModule, LangModule, LocaleModule, AuthModule, DictionaryModule, MenuModule, RoleModule, TenantModule, MemberModule, IotSimModule, DeviceModule, PlatformModule, PricingRuleModule, DeviceSettingAttrModule, SettingAttrModelModule, DeviceModelModule, DeviceParamsRuleModule, ChargeOrderModule, UserModule, ScheduleModule, RechargeOptionModule, RechargeOrderModule, ChargingStationModule, MerchantModule, WithdrawalModule, OtaModule, ChargingCardModule],
  controllers: [AdminController, BaseController],
  providers: [AdminService, {provide : APP_GUARD, useClass : AuthGuard}],
})
export class AdminModule {}
